import axios from "axios";
import { message } from "antd";

axios.defaults.timeout = 60000;

// 添加请求拦截器
axios.interceptors.request.use(
  function (config) {
    // 在发送请求之前做些什么
    // console.log("请求拦截器config:", config);

    return config;
  },
  function (error) {
    // 对请求错误做些什么
    // console.log("请求拦截器error:", error);
    return Promise.reject(error);
  }
);

// 添加响应拦截器
axios.interceptors.response.use(
  function (response) {
    const res = response.data;
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么
    // console.log("响应拦截器response:", response);
    // console.log("响应拦截器res:", res);
    switch (res.dataCode) {
      case "00":
        message.success(res.dataMessage);
        return res.data;
      case "01":
        return res.data;
      default:
        return response;
    }
  },
  function (error) {
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    // console.log("响应拦截器error:", error);
    message.error(error.message);

    return Promise.reject(error);
  }
);

export const httpPost = (url: string, params = {}, callback: void) => {
  return new Promise((resolve, reject) => {
    axios
      .post(url, params)
      .then((response) => {
        // console.log("post-axios.then:", response);
        resolve(response);
      })
      .catch((err) => {
        // console.log("post-axios.catch:", err);
        reject(err);
      });
  });
};

export const httpGet = (url: string, params = {}, callback: void) => {
  return new Promise((resolve, reject) => {
    axios
      .get(url, {
        params: params,
      })
      .then((response) => {
        // console.log("get-axios.then:", response);

        resolve(response);
      })
      .catch((err) => {
        // console.log("get-axios.catch:", err);

        reject(err);
      });
  });
};
